package com.setup.trac.pojo.transformer;

import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.transform.ResultTransformer;

import com.setup.trac.pojo.Stati;
import com.setup.trac.pojo.Tickets;
import com.setup.trac.pojo.Utenti;

public class TicketsResultTransformer implements ResultTransformer {
	/**
	 * 
	 */
	private static final long serialVersionUID = 7495009153412218743L;
	private Logger log = Logger.getLogger("tracsetup");

	public Object transformTuple(Object[] tuple, String[] aliases) {
		Tickets ticket = new Tickets();
		for (int i = 0; i < tuple.length; i++) {
			Object value =  tuple[i];
			String column = aliases[i];
			if(column.equalsIgnoreCase("id_ticket")){
				ticket.setIdTicket((BigDecimal) value);
			}
			if(column.equalsIgnoreCase("DATA_INSERIMENTO")){
				ticket.setDataInserimento((Date) value);
			}
			if(column.equalsIgnoreCase("TITOLO_TICKET")){
				ticket.setTitoloTicket((String) value);
			}
			if(column.equalsIgnoreCase("STATO_TICKET")){
				Stati stato = ticket.getStati();
				if(stato==null){
					stato = new Stati();
				}
				stato.setIdStato((BigDecimal) value);
				ticket.setStati(stato);
			}
			if(column.equalsIgnoreCase("STATO")){
				Stati stato = ticket.getStati();
				if(stato==null){
					stato = new Stati();
				}
				stato.setDescrizione((String) value);
				ticket.setStati(stato);
			}
			if(column.equalsIgnoreCase("DATA_ULTIMA_MODIFICA")){
				ticket.setDataUltimaModifica((Date) value);
			}
			if(column.equalsIgnoreCase("ID_OWNER")){
				Utenti utente = ticket.getUtentiByIdOwner();
				if(utente==null){
					utente = new Utenti();
				}
				utente.setIdUtente((BigDecimal) value);
				ticket.setUtentiByIdOwner(utente);
			}
			if(column.equalsIgnoreCase("ID_UTENTE_ULTIMA_MODIFICA")){
				Utenti utente = ticket.getUtentiByIdUtenteUltimaModifica();
				if(utente==null){
					utente = new Utenti();
				}
				utente.setIdUtente((BigDecimal) value);
				ticket.setUtentiByIdUtenteUltimaModifica(utente);
			}
			if(column.equalsIgnoreCase("nome_ult_mod")){
				Utenti utente = ticket.getUtentiByIdUtenteUltimaModifica();
				if(utente==null){
					utente = new Utenti();
				}
				utente.setNome((String) value);
				ticket.setUtentiByIdUtenteUltimaModifica(utente);
			}
			if(column.equalsIgnoreCase("cog_ultima_mod")){
				Utenti utente = ticket.getUtentiByIdUtenteUltimaModifica();
				if(utente==null){
					utente = new Utenti();
				}
				utente.setCognome((String) value);
				ticket.setUtentiByIdUtenteUltimaModifica(utente);
			}
			if(column.equalsIgnoreCase("nome_owner")){
				Utenti utente = ticket.getUtentiByIdOwner();
				if(utente==null){
					utente = new Utenti();
				}
				utente.setNome((String) value);
				ticket.setUtentiByIdOwner(utente);
			}
			if(column.equalsIgnoreCase("cog_owner")){
				Utenti utente = ticket.getUtentiByIdOwner();
				if(utente==null){
					utente = new Utenti();
				}
				utente.setCognome((String) value);
				ticket.setUtentiByIdOwner(utente);
			}
			if(column.equalsIgnoreCase("nome")){
				Utenti utente = ticket.getUtentiByIdUtente();
				if(utente==null){
					utente = new Utenti();
				}
				utente.setNome((String) value);
				ticket.setUtentiByIdUtente(utente);
			}
			if(column.equalsIgnoreCase("cognome")){
				Utenti utente = ticket.getUtentiByIdUtente();
				if(utente==null){
					utente = new Utenti();
				}
				utente.setCognome((String) value);
				ticket.setUtentiByIdUtente(utente);
			}
			if(column.equalsIgnoreCase("ID_PROGETTO")){
				ticket.setIdProgetto((BigDecimal) value);
			}
			if(column.equalsIgnoreCase("ID_TIPO_INTERVENTO")){
				ticket.setIdTipoIntervento((BigDecimal) value);
			}
			

		}
		return ticket;
	}

	private Date formatDate(String value) throws ParseException {
		Date d = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL).parse(value);
		return d;
	}
	
	public List transformList(List collection) {
		// TODO Auto-generated method stub
		return collection;
	}
	
}
